package com.sourcetrip.raw.adt;


import com.sourcetrip.raw.adt.abs.MyAbstractLinkedList;

/**
 * @author: ZhouBert
 * @date: 2020/11/18
 * @description:
 * 这是一个未完成的双向链表
 * 具体的实现看 MyDoublyLinkedList3
 */
public class MyDoublyLinkedList2<E> extends MyAbstractLinkedList<E> {

	/**
	 * 添加时，需要对是否为末尾的元素进行判断
	 * 这样的写法越来越向 jdk 了
	 * @param index
	 * @param element
	 */
	@Override
	public void add(int index, E element) {
		if (index==size) {
			//添加到末尾||没有元素的时候：（从末尾入手）
			//1.拿到 last 节点；
			//2.构建 node 节点，完成指向关系；
			//3.将原来的 last 指向 node
			//4.重置 last
			linkLast(element);
		}else{
			//中间节点时：
			//1.获取指定 index 的 node
			//2.获取 pre node
			//3.构建新的  node
			//4.完成指向关系：改变1,2,的指向
			linkBefore(element);
		}
		size++;
	}

	private void linkBefore(E element) {
	}

	private void linkLast(E element) {
	}

	@Override
	public E get(int index) {
		return null;
	}

	@Override
	public E set(int index, E element) {
		return null;
	}

	/**
	 * 1.获取删除的元素；
	 * 2.获得 pre;
	 * 3.获得 next;
	 * 4.改变前一个节点的 next;
	 * 5.改变后一个节点的 pre
	 * @param index
	 * @return
	 */
	@Override
	public E remove(int index) {
		return null;
	}

	@Override
	public int indexOf(E element) {
		return 0;
	}

	@Override
	public void clear() {

	}

	@Override
	public String toString() {
		return super.toString();
	}
}
